/**
 * ZHU framework. Copyright 2012-, all rights reserved.
 *
 * $Id: Daily.java 40 2012-09-13 01:38:05Z zhuxiaopeng $
 * $Revision: 40 $
 * $Date: 2012-09-13 09:38:05 +0800 (四, 2012-09-13) $
 * $Author: zhuxiaopeng $
 */
package daily.entity;

import java.util.*;

import javax.persistence.*;
import javax.persistence.Entity;

import zhu.framework.entity.*;

/**
 * <p>
 * </p>
 * 
 * @author $Author: zhuxiaopeng $
 * @version $Revision: 40 $ - $Date: 2012-09-13 09:38:05 +0800 (四, 2012-09-13) $
 */
@Entity
@Table(uniqueConstraints = { @UniqueConstraint(columnNames = { "date", "staff_id" }) })
public class Daily extends AbstractEntityWithLongId {

	/**
	 * <h3>スレッドセーフ性</h3>
	 * <p>
	 * この変数は<code>this</code>によってGuardされる。 この変数は<code>final</code>
	 * であり、参照先がスレッドセーフであるため、スレッドセーフ性を破ることはない。
	 * この変数の参照先はスレッドセーフ<strong>ではない</strong>。
	 * </p>
	 */
	private static final long serialVersionUID = 1L;

	/**
	 * <p>
	 * プロパティ<code>content</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>content</code>の値
	 */
	public String getContent() {
		return content;
	}

	/**
	 * <p>
	 * プロパティ<code>content</code>の値を設定する。
	 * </p>
	 * 
	 * @param content
	 *            プロパティ<code>content</code>に設定する値
	 */
	public void setContent(final String content) {
		this.content = content;
	}

	/**
	 * <p>
	 * プロパティ<code>date</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>date</code>の値
	 */
	public Date getDate() {
		return date;
	}

	/**
	 * <p>
	 * プロパティ<code>date</code>の値を設定する。
	 * </p>
	 * 
	 * @param date
	 *            プロパティ<code>date</code>に設定する値
	 */
	public void setDate(final Date date) {
		this.date = date;
	}

	/**
	 * <p>
	 * プロパティ<code>staff</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>staff</code>の値
	 */
	public Staff getStaff() {
		return staff;
	}

	/**
	 * <p>
	 * プロパティ<code>staff</code>の値を設定する。
	 * </p>
	 * 
	 * @param staff
	 *            プロパティ<code>staff</code>に設定する値
	 */
	public void setStaff(final Staff staff) {
		this.staff = staff;
	}

	/**
	 * <p>
	 * プロパティ<code>startTime</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>startTime</code>の値
	 */
	public String getStartTime() {
		return startTime;
	}

	/**
	 * <p>
	 * プロパティ<code>startTime</code>の値を設定する。
	 * </p>
	 * 
	 * @param startTime
	 *            プロパティ<code>startTime</code>に設定する値
	 */
	public void setStartTime(final String startTime) {
		this.startTime = startTime;
	}

	/**
	 * <p>
	 * プロパティ<code>endTime</code>の値を取得する。
	 * </p>
	 * 
	 * @return プロパティ<code>endTime</code>の値
	 */
	public String getEndTime() {
		return endTime;
	}

	/**
	 * <p>
	 * プロパティ<code>endTime</code>の値を設定する。
	 * </p>
	 * 
	 * @param endTime
	 *            プロパティ<code>endTime</code>に設定する値
	 */
	public void setEndTime(final String endTime) {
		this.endTime = endTime;
	}

	@Lob
	private String content;

	@Temporal(TemporalType.DATE)
	@Column(nullable = false)
	private Date date;

	@ManyToOne(cascade = { CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH }, optional = false, fetch = FetchType.EAGER)
	@JoinColumn(name = "staff_id", nullable = false)
	private Staff staff;

	@Column(nullable = false, name = "start_time")
	private String startTime;

	@Column(nullable = false, name = "end_time")
	private String endTime;
}
